package com.neusoft.util;

import java.text.DateFormat;
import java.text.DateFormatSymbols;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import org.springframework.core.convert.converter.Converter;

public class DateConvert implements Converter<String, Date>{

	@Override
	public Date convert(String str) {
		Date date = doConvert(str);
		return date;
	}
	
	private Date doConvert(String str)  {
		//默认值
		Date date = null;
		//要转换的日期类型的格式
		final String DATE = "yyyy-MM-dd";
		final String DATETIME = "yyyy-MM-dd hh:mm:ss";
		final String TIMESTAMP = "yyyy-MM-dd hh:mm:ss.SSS";
		//将字符串转化成日期对象,判断字符串是否为空
		if (str == null && "".equals(str)) {
			return date;
		}
		//判断被转换的对象值是否为String类型
		if (str instanceof String) {
			//获取被转换的字符串
			String dateValue = str.toString().trim();
			//获取字符串的长度
			int length = dateValue.length();
			DateFormat dateFormat = null;
			try {
				// 处理只有年月日的格式：转换为“yyyy-MM-dd”格式的Date对象
				if (length<= DATE.length()) {
					dateFormat = new SimpleDateFormat(DATE,new DateFormatSymbols(Locale.CHINA));
					date = dateFormat.parse(dateValue);
				}
				// 处理只有年月日时分秒的格式：转换为“yyyy-MM-dd HH:mm:ss”格式的Date对象
				else if(length<= DATETIME.length()) {
					dateFormat = new SimpleDateFormat(DATETIME, new DateFormatSymbols(Locale.CHINA));
					date = dateFormat.parse(dateValue);
				}
				// 处理只有年月日时分秒三位毫秒的格式：转换为“yyyy-MM-dd HH:mm:ss.SSS”格式的Date对象
				else if(length <= TIMESTAMP.length()) {
					dateFormat = new SimpleDateFormat(TIMESTAMP, new DateFormatSymbols(Locale.CHINA));
					date = dateFormat.parse(dateValue);
				}
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
		return date;
	}
}
